home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / games / nhak_src.zip / DECL.C < prev    next >
C/C++ Source or Header  |  1993-03-16  |  11KB  |  352 lines

  1. /*    SCCS Id: @(#)decl.c    3.0    88/10/25
  2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  3. /* NetHack may be freely redistributed.  See license for details. */
  4.  
  5. #include    "hack.h"
  6.  
  7. int NEARDATA multi = 0;
  8. int NEARDATA warnlevel = 0;        /* used by movemon and dochugw */
  9. int NEARDATA nroom = 0;
  10. int NEARDATA occtime = 0;
  11.  
  12. int x_maze_max, y_maze_max;    /* initialized in main, used in mkmaze.c */
  13.  
  14. #ifdef REDO
  15. int NEARDATA in_doagain = 0;
  16. #endif
  17.  
  18. /*
  19.  *    The following integers will be initialized at load time with
  20.  *    the level numbers of some "important" things in the game.
  21.  */
  22.  
  23.  int
  24.     NEARDATA medusa_level = 0,    /* level that the medusa lives on */
  25.     NEARDATA bigroom_level = 0,    /* level consisting of a single big room */
  26. #ifdef REINCARNATION
  27.     NEARDATA rogue_level = 0,    /* level near which rogue level gen'd */
  28. #endif
  29. #ifdef ORACLE
  30.     NEARDATA oracle_level = 0,    /* level near which Oracle gen'd */
  31. #endif
  32. #ifdef STRONGHOLD
  33.     NEARDATA stronghold_level = 3,    /* level the castle is on */
  34.     /* Not 0, otherwise they start the game in Hell and burn immediately */
  35.     NEARDATA tower_level = 0,    /* level of the top of Vlad's 3-level tower */
  36. #endif
  37.     NEARDATA wiz_level = 0;        /* level that the wiz lives on */
  38. boolean NEARDATA is_maze_lev = FALSE;    /* if this is a maze level */
  39.  
  40. int NEARDATA smeq[MAXNROFROOMS+1] = DUMMY;
  41. int NEARDATA doorindex = 0;
  42.  
  43. char NEARDATA *save_cm = 0;
  44. int NEARDATA killer_format = 0;
  45. const char NEARDATA *killer = 0;
  46. const char NEARDATA *nomovemsg = 0;
  47. const char NEARDATA nul[40] = DUMMY;        /* contains zeros */
  48. char NEARDATA plname[PL_NSIZ] = DUMMY;        /* player name */
  49. char NEARDATA pl_character[PL_CSIZ] = DUMMY;
  50.  
  51. #ifdef TUTTI_FRUTTI
  52. char NEARDATA pl_fruit[PL_FSIZ] = DUMMY;
  53. int NEARDATA current_fruit = 0;
  54. struct fruit NEARDATA *ffruit = 0;
  55. #endif
  56.  
  57. #ifdef STRONGHOLD
  58. char NEARDATA tune[6] = DUMMY;
  59. #  ifdef MUSIC
  60. schar NEARDATA music_heard = 0;
  61. #  endif
  62. #endif
  63.  
  64. #ifdef SMALLDATA
  65. const char *occtxt = 0;
  66. #else
  67. const char NEARDATA *occtxt = DUMMY;
  68. #endif
  69. const char NEARDATA quitchars[] = " \r\n\033";
  70. const char NEARDATA vowels[] = "aeiouAEIOU";
  71. const char NEARDATA ynchars[] = "yn";
  72. const char NEARDATA ynqchars[] = "ynq";
  73. const char NEARDATA ynaqchars[] = "ynaq";
  74. const char NEARDATA nyaqchars[] = "nyaq";
  75.  
  76. #ifdef SMALLDATA
  77. char *HI = 0, *HE = 0, *AS = 0, *AE = 0, *CD = 0;
  78.     /* set up in termcap.c */
  79. #else
  80. char *HI = DUMMY, *HE = DUMMY, *AS = DUMMY, *AE = DUMMY, *CD = DUMMY;
  81.     /* set up in termcap.c */
  82. #endif
  83. int CO = 0, LI = 0;    /* set up in termcap.c: usually COLNO and ROWNO+3 */
  84.  
  85. #ifdef CLIPPING
  86. boolean clipping = FALSE;    /* clipping on? */
  87. int clipx = 0, clipy = 0, clipxmax = 0, clipymax = 0;
  88. #endif
  89.  
  90. #ifdef TEXTCOLOR
  91. # ifdef TOS
  92. const char *hilites[MAXCOLORS];    /* terminal escapes for the various colors */
  93. # else
  94. char NEARDATA *hilites[MAXCOLORS]; /* terminal escapes for the various colors */
  95. # endif
  96. #endif
  97. #ifdef MSDOS
  98. char hackdir[PATHLEN];        /* where rumors, help, record are */
  99. const char *configfile = "NetHack.cnf";    /* read by read_config_file() */
  100. char levels[PATHLEN];        /* where levels are */
  101. #endif /* MSDOS */
  102.  
  103. #ifdef DGK
  104. char lock[FILENAME];        /* pathname of level files */
  105. char permbones[PATHLEN];    /* where permanent copy of bones go */
  106. int ramdisk = FALSE;        /* whether to copy bones to levels or not */
  107. int saveprompt = TRUE;
  108. const char *alllevels = "levels.*";
  109. const char *allbones = "bones.*";
  110. #else
  111. # ifdef VMS
  112. char lock[PL_NSIZ+16] = "1lock";/* long enough for uic+login_name+.99;1 */
  113. # else
  114. char lock[PL_NSIZ+14] = "1lock";/* long enough for uic+login_name+.99 */
  115. # endif
  116. #endif
  117.  
  118. int NEARDATA dig_effort = 0;    /* effort expended on current pos */
  119. uchar NEARDATA dig_level = 0;
  120. coord NEARDATA dig_pos = DUMMY;
  121. boolean NEARDATA dig_down = FALSE;
  122.  
  123. xchar NEARDATA dlevel = 1;
  124. xchar NEARDATA maxdlevel = 1;
  125. int NEARDATA done_stopprint = 0;
  126. int NEARDATA done_hup = 0;
  127. xchar NEARDATA xupstair = 0, NEARDATA yupstair = 0, 
  128.     NEARDATA xdnstair = 0, NEARDATA ydnstair = 0;
  129. #ifdef STRONGHOLD
  130. xchar NEARDATA xupladder = 0, NEARDATA yupladder = 0,
  131.     NEARDATA xdnladder = 0, NEARDATA ydnladder = 0;
  132. #endif
  133. xchar NEARDATA curx = 0, NEARDATA cury = 0;
  134. xchar NEARDATA seelx = 0, NEARDATA seehx = 0, NEARDATA seely = 0,
  135.     NEARDATA seehy = 0; /* corners of lit room */
  136. xchar NEARDATA seelx2 = 0, NEARDATA seehx2 = 0, NEARDATA seely2 = 0,
  137.     NEARDATA  seehy2 = 0; /* corners of lit room */
  138. xchar NEARDATA scrlx = 0, NEARDATA scrhx = 0, NEARDATA scrly = 0,
  139.     NEARDATA scrhy = 0; /* corners of new scr. area*/
  140. xchar NEARDATA fountsound = 0;
  141. xchar NEARDATA sinksound = 0; /* numbers of other things that make noise */
  142.  
  143. boolean NEARDATA in_mklev = FALSE;
  144. boolean    NEARDATA stoned = FALSE;    /* done to monsters hit by 'c' */
  145. boolean    NEARDATA unweapon = FALSE;
  146. boolean NEARDATA mrg_to_wielded = FALSE;
  147.              /* weapon picked is merged with wielded one */
  148.  
  149. #ifdef KOPS
  150. boolean NEARDATA allow_kops = TRUE;
  151. #endif
  152.  
  153. coord NEARDATA bhitpos = DUMMY;
  154. coord NEARDATA doors[DOORMAX] = DUMMY;
  155.  
  156. struct mkroom NEARDATA rooms[MAXNROFROOMS+1] = DUMMY;
  157. dlevel_t level;        /* level map */
  158. struct trap *ftrap = 0;
  159. struct gold *fgold = 0;
  160. struct monst NEARDATA youmonst = DUMMY;    /* dummy; used as return value for boomhit */
  161. struct flag NEARDATA flags = DUMMY;
  162. struct you NEARDATA u = DUMMY;
  163.  
  164. struct obj NEARDATA *fcobj = 0, NEARDATA *invent = 0, NEARDATA *uwep = 0,
  165.     NEARDATA *uarm = 0,
  166. #ifdef SHIRT
  167.     NEARDATA *uarmu = 0,        /* under-wear, so to speak */
  168. #endif
  169. #ifdef POLYSELF
  170.     NEARDATA *uskin = 0,        /* dragon armor, if a dragon */
  171. #endif
  172.     NEARDATA *uarmc = 0, NEARDATA *uarmh = 0, NEARDATA *uarms = 0,
  173.     NEARDATA *uarmg = 0, NEARDATA *uarmf = 0, NEARDATA *uamul = 0,
  174.     NEARDATA *uright = 0, NEARDATA *uleft = 0, NEARDATA *ublindf = 0,
  175.     NEARDATA *uchain = 0, NEARDATA *uball = 0;
  176.  
  177. symbol_array defsyms = {
  178.     ' ', /* stone */
  179.     '|', /* vwall */
  180.     '-', /* hwall */
  181.     '-', /* tlcorn */
  182.     '-', /* trcorn */
  183.     '-', /* blcorn */
  184.     '-', /* brcorn */
  185.     '-', /* crwall */
  186.     '-', /* tuwall */
  187.     '-', /* tdwall */
  188.     '|', /* tlwall */
  189.     '|', /* trwall */
  190.     '|', /* vbeam */
  191.     '-', /* hbeam */
  192.     '\\', /* lslant */
  193.     '/', /* rslant */
  194.     '.', /* ndoor */
  195.     '-', /* vodoor */
  196.     '|', /* hodoor */
  197.     '+', /* cdoor */
  198.     '.', /* room */
  199.     '#', /* corr */
  200.     '<', /* upstair */
  201.     '>', /* dnstair */
  202.     '^', /* trap */
  203.     '"', /* web */
  204.     '}', /* pool */
  205.     '{', /* fountain */    /* used ifdef FOUNTAINS */
  206.     '#', /* sink */    /* used ifdef SINKS */
  207.     '\\', /* throne */    /* used ifdef THRONES */
  208.     '_', /* altar */    /* used ifdef ALTARS */
  209.     '<', /* upladder */    /* used ifdef STRONGHOLD */
  210.     '>', /* dnladder */    /* used ifdef STRONGHOLD */
  211.     '#', /* dbvwall */    /* used ifdef STRONGHOLD */
  212.     '#', /* dbhwall */    /* used ifdef STRONGHOLD */
  213. };
  214. symbol_array showsyms = DUMMY; /* will contain the symbols actually used */
  215. #ifdef REINCARNATION
  216. symbol_array savesyms = DUMMY;
  217. #endif
  218.  
  219. const char *explainsyms[MAXPCHARS] = {
  220.     "dark part of a room", "wall", "wall",
  221.     "wall", "wall", "wall",
  222.     "wall", "wall", "wall",
  223.     "wall", "wall", "wall",
  224.     "wall", "wall", "wall",
  225.     "wall", "doorway", "open door",
  226.     "open door", "closed door", "floor of a room",
  227.     "corridor", "staircase up", "staircase down",
  228.     "trap", "web", "water filled area",
  229. #ifdef FOUNTAINS
  230.     "fountain",
  231. #else
  232.     "",
  233. #endif
  234. #ifdef SINKS
  235.     "sink",
  236. #else
  237.     "",
  238. #endif
  239. #ifdef THRONES
  240.     "opulent throne",
  241. #else
  242.     "",
  243. #endif
  244. #ifdef ALTARS
  245.     "altar",
  246. #else
  247.     "",
  248. #endif
  249. #ifdef STRONGHOLD
  250.     "ladder up", "ladder down", "drawbridge", "drawbridge"
  251. #else
  252.     "", "", "", ""
  253. #endif
  254. };
  255.  
  256. #ifdef SPELLS
  257. struct spell NEARDATA spl_book[MAXSPELL + 1] = DUMMY;
  258. #endif
  259.  
  260. long NEARDATA moves = 1, NEARDATA monstermoves = 1;
  261.      /* These diverge when player is Fast */
  262. long NEARDATA wailmsg = 0;
  263.  
  264. struct obj NEARDATA zeroobj = DUMMY;    /* used to zero all elements of a struct obj */
  265.  
  266. struct obj *billobjs = 0;
  267.  
  268. #ifdef THINK_C
  269. const char Black[] = "black";
  270. #else
  271. const char black[] = "black";
  272. #endif
  273. const char amber[] = "amber";
  274. #ifdef THEOLOGY
  275. const char golden[] = "golden";
  276. #endif
  277. const char light_blue[] = "light blue";
  278. const char red[] = "red";
  279. const char green[] = "green";
  280. const char silver[] = "silver";
  281. const char blue[] = "blue";
  282. const char purple[] = "purple";
  283. #ifdef THINK_C
  284. const char White[] = "white";
  285. #else
  286. const char white[] = "white";
  287. #endif
  288.  
  289. const char nothing_happens[] = "Nothing happens.";
  290. const char thats_enough_tries[] = "That's enough tries!";
  291.  
  292. const char monsyms[] = { S_HUMAN, S_GHOST, S_ANT, S_BLOB, S_COCKATRICE, S_DOG,
  293. S_EYE, S_FELINE, S_GREMLIN, S_HUMANOID, S_IMP, S_JELLY, S_KOBOLD,
  294. S_LEPRECHAUN, S_MIMIC, S_NYMPH, S_ORC, S_PIERCER, S_QUADRUPED, S_RODENT,
  295. S_SPIDER, S_TRAPPER, S_UNICORN, S_VORTEX, S_WORM, S_XAN, S_YLIGHT, S_ZRUTY,
  296. S_APE, S_BAT, S_CENTAUR, S_DRAGON, S_ELEMENTAL, S_FUNGUS, S_GNOME, S_GIANT,
  297. S_STALKER, S_JABBERWOCK,
  298. #ifdef KOPS
  299. S_KOP,
  300. #endif
  301. S_LICH, S_MUMMY, S_NAGA, S_OGRE, S_PUDDING, S_QUANTMECH, S_RUSTMONST, S_SNAKE,
  302. S_TROLL, S_UMBER, S_VAMPIRE, S_WRAITH, S_XORN, S_YETI, S_ZOMBIE,
  303. #ifdef GOLEMS
  304. S_GOLEM,
  305. #endif
  306. S_DEMON, S_EEL, S_LIZARD,
  307. #ifdef WORM
  308. S_WORM_TAIL,
  309. #endif
  310. 0 };
  311.  
  312. const char objsyms[] = { WEAPON_SYM, ARMOR_SYM, POTION_SYM, SCROLL_SYM,
  313. WAND_SYM,
  314. #ifdef SPELLS
  315. SPBOOK_SYM,
  316. #endif
  317. RING_SYM, AMULET_SYM, FOOD_SYM, TOOL_SYM, GEM_SYM, GOLD_SYM,
  318. ROCK_SYM, BALL_SYM, CHAIN_SYM, 0 };
  319.  
  320. const char *monexplain[] = {
  321. "human", "ghost", "ant or other insect", "blob", "cockatrice",
  322. "dog or other canine", "eye or sphere", "feline", "gremlin", "humanoid",
  323. "imp or minor demon", "jelly", "kobold", "leprechaun", "mimic",
  324. "nymph", "orc", "piercer", "quadruped", "rodent",
  325. "spider", "trapper or lurker above", "unicorn", "vortex", "worm",
  326. "xan or other mythical/fantastic insect", "yellow light", "zruty",
  327. "ape", "bat", "centaur", "dragon", "elemental",
  328. "fungus or mold", "gnome", "giant humanoid", "invisible stalker", "jabberwock",
  329. #ifdef KOPS
  330. "Keystone Kop",
  331. #endif
  332. "lich", "mummy", "naga", "ogre", "pudding or ooze",
  333. "quantum mechanic", "rust monster", "snake", "troll", "umber hulk",
  334. "vampire", "wraith", "xorn", "yeti", "zombie",
  335. #ifdef GOLEMS
  336. "golem",
  337. #endif
  338. "demon",  "sea monster", "lizard",
  339. #ifdef WORM
  340. "long worm tail",
  341. #endif
  342. };
  343.  
  344. const char *objexplain[] = {
  345. "weapon", "suit or piece of armor", "potion", "scroll", "wand",
  346. #ifdef SPELLS
  347. "spell book",
  348. #endif
  349. "ring", "amulet", "piece of food", "useful item (pick-axe, key, lamp...)",
  350. "gem or rock", "pile of gold", "boulder or statue", "iron ball", "iron chain"
  351. };
  352.